package pe.com.hatunsol.hatun_android;

import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.gson.Gson;

import org.apache.http.entity.StringEntity;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.UnsupportedEncodingException;
import java.nio.charset.CharacterCodingException;
import java.security.NoSuchAlgorithmException;

import pe.com.hatunsol.hatun_android.dialogframent.ProgressDialogFragment;
import pe.com.hatunsol.hatun_android.entity.RestResult;
import pe.com.hatunsol.hatun_android.rest.RestClient;
import pe.com.hatunsol.hatun_android.utilitario.Util;
import pe.com.hatunsol.hatun_android.dialogframent.AceptarDialogfragment;
import pe.com.hatunsol.hatun_android.entity.Usuario;
import pe.com.hatunsol.hatun_android.rest.PostExecuteCallback;
import pe.com.hatunsol.hatun_android.rest.PreExecuteCallback;
import pe.com.hatunsol.hatun_android.rest.RestTask;

/**
 * Created by Sistemas on 27/02/2015.
 */
public class LoginActivity extends ActionBarActivity implements AceptarDialogfragment.AceptarDialogfragmentListener {

    private Button btLogin, btSalir;
    private EditText etUsuario, etContrasenia;
    private ProgressDialogFragment mProgressDialogFragment;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_login);

        btLogin = (Button) findViewById(R.id.btLogin);
        btSalir = (Button) findViewById(R.id.btSalir);
        etUsuario = (EditText) findViewById(R.id.etUsuario);
        etContrasenia = (EditText) findViewById(R.id.etContrasenia);


        btLogin.setOnClickListener(btLoginOnClickListener);
        btSalir.setOnClickListener(btSalirOnClickListener);


    }

    View.OnClickListener btLoginOnClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
if(etUsuario.getText().toString().equals("") || etContrasenia.getText().toString().equals("")){
    AceptarDialogfragment confirmacionDialogfragment = new AceptarDialogfragment();
    confirmacionDialogfragment.setMensaje("Ingrese todos los campos necesarios.");
    confirmacionDialogfragment.setmConfirmacionDialogfragmentListener(LoginActivity.this);
    confirmacionDialogfragment.show(getSupportFragmentManager(), AceptarDialogfragment.TAG);

}else {

    new VerificarLoginAsyncTask().execute();
}



        }
    };

    class VerificarLoginAsyncTask extends AsyncTask<Void, Void, RestResult> {

        @Override
        protected void onPostExecute(RestResult restResult) {
            super.onPostExecute(restResult);
            mProgressDialogFragment.dismissAllowingStateLoss();
            try {
                JSONObject jsonobj = new JSONObject(restResult.getResult());
                Usuario usuario = new Gson().fromJson(jsonobj.toString(), Usuario.class);
                String strPassword = Util.EncriptarPassword(etContrasenia.getText().toString());
                if(usuario==null){
                    Toast.makeText(LoginActivity.this, "Usuario o Contraseña Incorrectos", Toast.LENGTH_SHORT).show();
                }
                else if (usuario.getPassword().equals(strPassword)) {
                    Util.BE_DatosUsuario = usuario;
                    Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                    startActivity(intent);
                    finish();

                } else if (usuario.isIndicadorActivo() == false) {
                    Toast.makeText(LoginActivity.this, "El Usuario se encuentra Inactivo", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(LoginActivity.this, "Usuario o Contraseña Incorrectos", Toast.LENGTH_SHORT).show();
                }

            } catch (JSONException e) {
                e.printStackTrace();
            } catch (CharacterCodingException e) {
                e.printStackTrace();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }


        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            mProgressDialogFragment = new ProgressDialogFragment();
            mProgressDialogFragment.setMensaje("Iniciando Sesion");
            mProgressDialogFragment.show(getFragmentManager(), ProgressDialogFragment.TAG);
        }

        @Override
        protected RestResult doInBackground(Void... params) {
            StringEntity stringEntity=null;

            return new RestClient().get("Usuario.svc/Usuario/"+etUsuario.getText().toString(), stringEntity, 10000);


        }
    }


    View.OnClickListener btSalirOnClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    };


    @Override
    public void onConfirmacionOK() {

    }
}
